Introduction

From a programmers perspective, the Standard Data Objects (TM) ODBC Class Library for MFC is a dream.  Over the past 5 years, I've dealt with many different databases. Because different applications had different requirements, resulting in the use of different databases, I needed a way to leverage my skills so that I wouldn't have to keep learning ( and relearning ! ) different database vendor's API's.  For that reason, I decided to use ODBC.  In that respect, ODBC is a nice tool.  But, if you've ever had to code an application using nothing but the ODBC API to interact with the database(s), you know what a pain that can be. An app with multiple HSTMT's in multiple code blocks, with bound data variables each in who knows what state, is an app just waiting to core dump. 

I found other ODBC libraries are either too restrictive, too expensive, or just too hard to use.  My experience with RAD tools was not much different.  There always seems to be something you need to do that is beyond the limitations of your RAD tool, so you're forced to either write a ton of code to get around the limitation, leave some feature out, or not use the RAD tool at all.  So, I designed the Standard Data Objects, partly out of necessity,  partly out of frustration, but mostly because I needed to streamline application development.  

Standard as it may be, ODBC programming is tedious and messy.  This was a way to simplify database interaction, and let the bulk of the time spent in an application development cycle be spent on the application itself, and not spent searching the ODBC reference manuals.  How many times have you looked  up the cbColDef parameter to see how it affects SQL_C_CHAR vs. SQL_C_LONG, or gotten compile errors because your char* needed to be cast to a UCHAR* ?  I think you'll find these classes very useful, with a minimal learning curve. They  are an elegantly simple, yet very powerful C++ encapsulation of the low level ODBC API.  

The Standard Data Objects facilitate easy interaction with any database for which an ODBC driver is available, from standalone desktop databases such as Microsoft Access and Borland dBASE, to full scale client-server systems such as Oracle, Sybase, Informix and Microsoft SQL Server.  ( The development of these classes was done with both Oracle 7.3 and Microsoft SQL Server 6.5 )  All the core database actions and interactions such as selects, updates, deletes, etc. are encapsulated in their respective classes.

Did you ever get totally frustrated trying to retrieve your output parameters from a stored procedure?  If so, you're going to love the sdo_procedure class !!! In addition, error handling has been fully centralized, which frees the programmer from countless lines of redundant code.  The main intention in the design and development of these classes was that they be easy to use, robust, and that they totally hide the gory details of the ODBC API. In looking at the accompanying source code files, wouldn't you agree that the Standard Data Objects do just that?

If you have any questions about this library, send me an email at newhavensoftware@snet.net.

So, why wait?  If you're going to continue development with ODBC, why not leverage your time with the Standard Data Objects (TM) ODBC Class Library for MFC?  See the file "how2ord.txt" for ordering information.
